На заданном
промежутке [a, b] выведите в возрастающем порядке все трёхзначные числа, у которых
все цифры различны.
Вход. Два натуральных трехзначных числа a и b (100 ≤ a ≤ b ≤ 999).
Выход. Вывести в
порядке возрастания все трёхзначные числа из интервала [a, b] с различными
цифрами. Каждое число следует выводить в отдельной строке.
Пример
входа |
Пример
выхода |
100 105 |
102 103 104 105 |
перебор
Переберем все трехзначные числа от a до b. Если все цифры
числа различны, то выводим его.
На вход функции diff поступает
трехзначное число n. Выделим из него
цифры сотен a, десятков b и единиц c. Функция diff возвращает 1,
если все цифры числа n разные.
int diff(int
n)
{
int b = (n / 10) % 10;
int c = n % 10;
return (a !=
b) && (b != c) && (a != c);
}
Основная часть
программы. Читаем входные значения a и b.
scanf("%d %d",&a,&b);
Перебираем все числа на промежутке [a, b]. Если в текущем
числе i все цифры различны, то
выводим его.
for(i = a; i <= b; i++)
if (diff(i))
printf("%d\n",i);
import java.util.*;
public class Main
{
static boolean diff(int n)
{
int a = n / 100,
b = (n / 10) % 10, c = n % 10;
return !((a == b ) || (b == c) || (a == c));
}
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int a = con.nextInt();
int b = con.nextInt();
for(int i = a; i <= b; i++)
if(diff(i))
System.out.println(i);
con.close();
}
}
На вход функции diff поступает
трехзначное число n. Выделим из него
цифры сотен a, десятков b и единиц c. Функция diff возвращает 1,
если все цифры числа n разные.
def diff(n):
a = n // 100
b = (n // 10) % 10
c = n % 10
return a != b and b != c and a != c
Основная часть
программы. Читаем входные значения a и b.
a, b = map(int, input().split())
Перебираем все числа на промежутке [a, b]. Если в текущем
числе i все цифры различны, то
выводим его.
for i in range(a, b+1):
if diff(i): print(i)